package com.xmq.utils.controller;

import com.xmq.utils.bean.BaseResp;
import com.xmq.utils.bean.BaseRespExt;


public abstract class BaseController<T> {

    /**
     * 返回携带数据的json
     *
     * @param code
     * @param msg
     * @param state
     * @param data
     * @return
     */
    public BaseRespExt<T> create(int code, String msg, Boolean state, T data) {
        BaseRespExt<T> tBaseRespExt = new BaseRespExt<>();
        tBaseRespExt.setCode(code);
        tBaseRespExt.setState(state);
        tBaseRespExt.setMsg(msg);
        tBaseRespExt.setData(data);
        return tBaseRespExt;
    }


    /**
     * 返回自定义的状态
     *
     * @param code
     * @param msg
     * @param state
     * @return
     */
    public BaseResp createBaseResp(int code, String msg, boolean state) {
        BaseResp baseResp = new BaseResp();
        baseResp.setCode(code);
        baseResp.setMsg(msg);
        baseResp.setState(state);
        return baseResp;
    }

    /**
     * 返回默认的成功,不带数据
     *
     * @return
     */
    public BaseResp createBaseRespSuccess() {
        BaseResp baseResp = new BaseResp();
        baseResp.setCode(200);
        baseResp.setMsg("成功");
        baseResp.setState(true);
        return baseResp;
    }

    /**
     * 返回默认的失败,不带数据
     *
     * @return
     */
    public BaseResp createBaseRespError() {
        BaseResp baseResp = new BaseResp();
        baseResp.setCode(500);
        baseResp.setMsg("失败");
        baseResp.setState(false);
        return baseResp;
    }

    /**
     * 返回默认的失败,带数据
     *
     * @return
     */
    public BaseResp createBaseRespExtError(T data) {
        BaseRespExt baseResp = new BaseRespExt();
        baseResp.setCode(500);
        baseResp.setMsg("失败");
        baseResp.setState(false);
        baseResp.setData(data);
        return baseResp;
    }

    /**
     * 返回默认的成功,带数据
     *
     * @return
     */
    public BaseResp createBaseRespExtSuccess(T data) {
        BaseRespExt baseResp = new BaseRespExt();
        baseResp.setCode(200);
        baseResp.setMsg("成功");
        baseResp.setState(true);
        baseResp.setData(data);
        return baseResp;
    }


    /**
     * 返回自定义的提示信息,和详细数据
     *
     * @param data
     * @param msg
     * @return
     */
    public BaseResp createBaseRespExtSuccess(T data, String msg) {
        BaseRespExt<T> tBaseRespExt = new BaseRespExt<>();
        tBaseRespExt.setCode(200);
        tBaseRespExt.setState(true);
        tBaseRespExt.setMsg(msg);
        tBaseRespExt.setData(data);
        return tBaseRespExt;
    }
}

